图片

地点間の距離を計算する2通りの方法を紹介.

住所(地名)から緯度経度

ggmapパッケージのgeocode関数を使えば住所または地名から緯度?経度の座標を取得できる.

  • location : 住所または地名の文字列ベクトル
  • source : ジオコーディングに利用するサービスを指定, GoogleMapsAPI("google")またはData Science Toolkit("dsk")が利用可能, デフォルトは"google"
library(ggmap)
cities <- c("Hirosihma","Kyoto","Tokyo","Sapporo")
lonlat <- geocode(cities)
df <- data.frame(lonlat,row.names = cities)
df
##                lon      lat
## Hirosihma 132.4553 34.38520
## Kyoto     135.7680 35.01164
## Tokyo     139.6917 35.68949
## Sapporo   141.3544 43.06210

道のり距離(GoogleMap)

ggmapパッケージのmapdist関数を使えばGoogleMapを用いた地図上の道のり距離を計算できる. 始点fromと終点toの住所または地名を入力することで、GoogleMapsApiに接続して計算する.

  • from, to : 始点と終点の住所または地名
  • mode : 移動手段として車"driving"(デフォルト), 徒歩"walking", 自転車"bicycling"から選択する

広島と京都の地図上の道のり距離(車で移動):

mapdist(from = "Hiroshima", to = "Kyoto")
##        from    to      m      km    miles seconds minutes    hours
## 1 Hiroshima Kyoto 361152 361.152 224.4199   16692   278.2 4.636667

地表距離(楕円体上距離)

Imapパッケージのgdist関数を使えば楕円体上の距離を計算できる. デフォルトでは地球の軌道長半径(a)と起動短半径(b)が設定してあるので,地球の地表距離が計算される.

  • lon.1, lat.1 : 始点の経度と緯度
  • lat.2, lat.2 : 終点の経度と緯度
  • units : 距離単位, デフォルトのnm(海里)の他にメートルm, キロメートル(‘km’), マイル(mile)がある

広島と京都の地表距離の計算例:

library(Imap)
gdist(lon.1 = df$lon[1], lat.1 = df$lat[1], 
      lon.2 = df$lon[2], lat.2 = df$lat[2],
      units = "km")
## [1] 311.356